//基于select选择的Zepto select单选 包装集的插件选择
(function($){
    $.fn.select = function(options){
        var opts = $.extend({
            select_title: '',               //select选项值（标题值）
            select_text:'.select_text',      //默认为当前select文本值
            hidden: '',                     //select隐藏表单值
            opt_data: '',                    //select选项值（数组json对象）
            callback:function(hiddenVal){},  //成功确定以后执行的回调函数 当前表单隐藏val值
            select_con:'#select_con',         //追加的内容(快捷方式无啥用)
            sel_load:false                      //选择加载内容赋值为空 默认false
        },options||{}); //合并内容
        //直接指向this
        var othis = this;
        var handler;//设置事件禁止开启参数
        var set_height;
        var select_con_width;
        //隐藏表单有值时
        if($(opts.hidden).val() != ''){
            $.each(opts.opt_data,function(k,v){
                if($(opts.hidden).val() == v.value){
                    othis.find(opts.select_text).html(v.text);
                    return false;
                }
            });
        }
        //选择加载内容赋值为空
        if(opts.sel_load){
            othis.find(opts.hidden).val('');
            othis.find(opts.select_text).html('请选择'+opts.select_title);
        }
        //点击事件
        othis.click(function(){
            $(opts.select_con).remove();
            if($(opts.select_con).length > 0){
                return false;
            }
            //加载内容
            load();
            //设置高度
            set_height = $(opts.select_con).height() - $(opts.select_con).find('.select_header').height();
            $(opts.select_con).find('.select_list').css({
                'height':set_height + 'px'
            });
            //初始化事件禁止开启参数
            var firstScroll=new IScroll("#first",{preventDefault:false });
            //设置事件禁止开启参数
            handler=function (e) { e.preventDefault();};
            document.addEventListener('touchmove', handler, isPassive() ? {
                capture: false,
                passive: false
            } : false);


            //赋值内容 清除select
            $(opts.select_con).find('.select_list').find('li a').click(function(){
                assignment();
                othis.find(opts.select_text).html($(this).find('span').html());
                $(opts.hidden).val($(this).attr('data-id'));
                opts.callback($(this).attr('data-id'));
                //设置事件禁止开启参数
                document.removeEventListener('touchmove',handler,false);
            });
            //关闭加载层 清除select
            $(opts.select_con).find('.close').click(function(){
                assignment();
                //设置事件禁止开启参数
                document.removeEventListener('touchmove',handler,false);
            });
        });
        //设置监听滚动
        function isPassive() {
            var supportsPassiveOption = false;
            try {
                addEventListener("test", null, Object.defineProperty({}, 'passive', {
                    get: function () {
                        supportsPassiveOption = true;
                    }
                }));
            } catch(e) {}
            return supportsPassiveOption;
        }
        //加载内容
        function load(){
            var select_con = str_trim(opts.select_con);
            var str = '';
            if($('.masking').length <= 0){
                str+='<div class="masking" id="masking"></div>';
            }
            str+='<div class="select_con" id="'+select_con+'">';
            str+='<div class="select_header">';
            str+='<a class="close"></a>';
            str+='<div class="title">'+opts.select_title+'</div>';
            str+='</div>';
            str+='<div class="select_list">';

            str+='<div id="first">';
            str+='<ul>';
            //循环值
            if(opts.opt_data.length > 0){
                $.each(opts.opt_data,function(k,v){
                    if($(opts.hidden).val() == v.value){
                        str+='<li class="sel"><a data-id="'+ v.value +'"><span>'+ v.text +'</span><span class="tip"></span></a></li>';
                    }else{
                        str+='<li><a data-id="'+ v.value +'"><span>'+ v.text +'</span></a></li>';
                    }
                });
            }
            str+='</ul>';
            str+='</div>';

            str+='</div>';
            str+='</div>';
            //追击添加的内容
            $('body').append(str);

            $(".masking").show();
            //当文档的宽度大于内容的宽度时
            if($(document).width() > $(opts.select_con).width()){
                select_con_width = ( $(document).width() -  $(opts.select_con).width() )/2 ;
                $(opts.select_con).animate({
                    left:select_con_width + 'px',
                    'animation':'select_start 0.4s 0s ease',
                    'display':'block'
                }, 300);
            }else{
                $(opts.select_con).animate({
                    left:'0',
                    'animation':'select_start 0.4s 0s ease',
                    'display':'block'
                }, 300);
            }
        }

        //赋值内容
        function assignment(){
            $(opts.select_con).animate({
                'left':'7.5rem',
                'animation':'select_end .4s 0s ease',
                'display':'block'
            }, 300 ,function(){
                $(opts.select_con).remove();
                $(".masking").hide();
            });
        }
        return this;
    };
})(Zepto);

